package cn.tt.tuantuanerp.tuantuanerp.search.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author tarena
 */

@Data
@Accessors(chain = true)    // 支持链式Set赋值
@AllArgsConstructor         // 自动生成当前类的全参构造方法
@NoArgsConstructor          // 自动生成当前类的无参构造方法
@Document(indexName = "sku")
public class Sku {
    //基本信息
    /**
     * 库存sku编号 用户必须提交
     */
    @Id
    private Long skuId;
    /**
     *库存sku中文名称 用户必须提交
     */
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String skuName;
    /**
     *sku状态(0正常销售、1商品清仓、2停止销售)
     * 默认0
     */
    @Field(type = FieldType.Keyword)
    private Integer skuStatus;
    /**
     *售价 用户必须提交
     */
    @Field(type = FieldType.Keyword)
    private BigDecimal goodsPrice;
    //商品详细信息
    /**
     *商品图片 可以为null
     */
    @Field(type = FieldType.Keyword)
    private String goodsImg;
    //采购信息
    /**
     *采购在途数量(已采购商品派送数量)  定时任务 每天晚上自动计算
     */
    @Field(type = FieldType.Keyword)
    private Integer transitNum;
    //仓库&库存信息
    /**
     *库存 默认0 自动计算
     */
    @Field(type = FieldType.Keyword)
    private Integer goodsStock;
    /**
     *预测日销量 定时任务 每天晚上自动计算  计算公式: 7天*60%+30天*30%+90天*10%
     */
    @Field(type = FieldType.Keyword)
    private Integer forecastDailySales;
  /*  *//**
     *最新出库时间 默认null  新增订单事自动创建
     *//*
    @Field(type = FieldType.Keyword)
    private LocalDateTime latestReleaseTime;
    *//**
     *最新入库时间 采购入库时修改
     *//*
    @Field(type = FieldType.Keyword)
    private LocalDateTime latestEntryTime;*/
    /**
     *当前可售天数 自动计算 库存/预测日销量
     */
    @Field(type = FieldType.Keyword)
    private Integer currentAvailableDays;

}
